{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 1000
    },
    "colab_type": "code",
    "executionInfo": {
     "elapsed": 149677,
     "status": "ok",
     "timestamp": 1594026737917,
     "user": {
      "displayName": "yimign zhang",
      "photoUrl": "",
      "userId": "15825212196047040768"
     },
     "user_tz": -480
    },
    "id": "FJWQ3daBNakM",
    "outputId": "6781a157-e302-49bf-bbba-1c16f7760f14"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Files already downloaded and verified\n",
      "Files already downloaded and verified\n",
      "using  SGD\n",
      "Epoch: 1 Training...\n",
      "epoch: 1\t batch: 1000\t loss: 2.303650\n",
      "Accuracy of the network on the 10000 test images: 10 %\n",
      "Epoch: 2 Training...\n",
      "epoch: 2\t batch: 1000\t loss: 2.301963\n",
      "Accuracy of the network on the 10000 test images: 15 %\n",
      "Epoch: 3 Training...\n",
      "epoch: 3\t batch: 1000\t loss: 2.300114\n",
      "Accuracy of the network on the 10000 test images: 15 %\n",
      "Epoch: 4 Training...\n",
      "epoch: 4\t batch: 1000\t loss: 2.250662\n",
      "Accuracy of the network on the 10000 test images: 21 %\n",
      "Epoch: 5 Training...\n",
      "epoch: 5\t batch: 1000\t loss: 1.918269\n",
      "Accuracy of the network on the 10000 test images: 30 %\n",
      "Epoch: 6 Training...\n",
      "epoch: 6\t batch: 1000\t loss: 1.719618\n",
      "Accuracy of the network on the 10000 test images: 37 %\n",
      "Epoch: 7 Training...\n",
      "epoch: 7\t batch: 1000\t loss: 1.572756\n",
      "Accuracy of the network on the 10000 test images: 45 %\n",
      "Epoch: 8 Training...\n",
      "epoch: 8\t batch: 1000\t loss: 1.454235\n",
      "Accuracy of the network on the 10000 test images: 48 %\n",
      "Epoch: 9 Training...\n",
      "epoch: 9\t batch: 1000\t loss: 1.357485\n",
      "Accuracy of the network on the 10000 test images: 50 %\n",
      "Epoch: 10 Training...\n",
      "epoch: 10\t batch: 1000\t loss: 1.284541\n",
      "Accuracy of the network on the 10000 test images: 54 %\n",
      "Epoch: 11 Training...\n",
      "epoch: 11\t batch: 1000\t loss: 1.200118\n",
      "Accuracy of the network on the 10000 test images: 56 %\n",
      "Epoch: 12 Training...\n",
      "epoch: 12\t batch: 1000\t loss: 1.138314\n",
      "Accuracy of the network on the 10000 test images: 59 %\n",
      "Epoch: 13 Training...\n",
      "epoch: 13\t batch: 1000\t loss: 1.083271\n",
      "Accuracy of the network on the 10000 test images: 60 %\n",
      "Epoch: 14 Training...\n",
      "epoch: 14\t batch: 1000\t loss: 1.024671\n",
      "Accuracy of the network on the 10000 test images: 61 %\n",
      "Epoch: 15 Training...\n",
      "epoch: 15\t batch: 1000\t loss: 0.981245\n",
      "Accuracy of the network on the 10000 test images: 62 %\n",
      "Epoch: 16 Training...\n",
      "epoch: 16\t batch: 1000\t loss: 0.933415\n",
      "Accuracy of the network on the 10000 test images: 63 %\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/lib/python3.6/dist-packages/torch/serialization.py:402: UserWarning: Couldn't retrieve source code for container of type AlexNet. It won't be checked for correctness upon loading.\n",
      "  \"type \" + obj.__name__ + \". It won't be checked \"\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "using  Momentum\n",
      "Epoch: 1 Training...\n",
      "epoch: 1\t batch: 1000\t loss: 2.294980\n",
      "Accuracy of the network on the 10000 test images: 19 %\n",
      "Epoch: 2 Training...\n",
      "epoch: 2\t batch: 1000\t loss: 1.686162\n",
      "Accuracy of the network on the 10000 test images: 42 %\n",
      "Epoch: 3 Training...\n",
      "epoch: 3\t batch: 1000\t loss: 1.356965\n",
      "Accuracy of the network on the 10000 test images: 51 %\n",
      "Epoch: 4 Training...\n",
      "epoch: 4\t batch: 1000\t loss: 1.162794\n",
      "Accuracy of the network on the 10000 test images: 58 %\n",
      "Epoch: 5 Training...\n",
      "epoch: 5\t batch: 1000\t loss: 1.048443\n",
      "Accuracy of the network on the 10000 test images: 61 %\n",
      "Epoch: 6 Training...\n",
      "epoch: 6\t batch: 1000\t loss: 0.959365\n",
      "Accuracy of the network on the 10000 test images: 65 %\n",
      "Epoch: 7 Training...\n",
      "epoch: 7\t batch: 1000\t loss: 0.902562\n",
      "Accuracy of the network on the 10000 test images: 65 %\n",
      "Epoch: 8 Training...\n",
      "epoch: 8\t batch: 1000\t loss: 0.835709\n",
      "Accuracy of the network on the 10000 test images: 65 %\n",
      "Epoch: 9 Training...\n",
      "epoch: 9\t batch: 1000\t loss: 0.797622\n",
      "Accuracy of the network on the 10000 test images: 66 %\n",
      "Epoch: 10 Training...\n",
      "epoch: 10\t batch: 1000\t loss: 0.758008\n",
      "Accuracy of the network on the 10000 test images: 66 %\n",
      "Epoch: 11 Training...\n",
      "epoch: 11\t batch: 1000\t loss: 0.717443\n",
      "Accuracy of the network on the 10000 test images: 67 %\n",
      "Epoch: 12 Training...\n",
      "epoch: 12\t batch: 1000\t loss: 0.679292\n",
      "Accuracy of the network on the 10000 test images: 67 %\n",
      "Epoch: 13 Training...\n",
      "epoch: 13\t batch: 1000\t loss: 0.651735\n",
      "Accuracy of the network on the 10000 test images: 67 %\n",
      "Epoch: 14 Training...\n",
      "epoch: 14\t batch: 1000\t loss: 0.634828\n",
      "Accuracy of the network on the 10000 test images: 66 %\n",
      "Epoch: 15 Training...\n",
      "epoch: 15\t batch: 1000\t loss: 0.603217\n",
      "Accuracy of the network on the 10000 test images: 66 %\n",
      "Epoch: 16 Training...\n",
      "epoch: 16\t batch: 1000\t loss: 0.575091\n",
      "Accuracy of the network on the 10000 test images: 67 %\n",
      "using  RMSprop\n",
      "Epoch: 1 Training...\n",
      "epoch: 1\t batch: 1000\t loss: 1.781419\n",
      "Accuracy of the network on the 10000 test images: 42 %\n",
      "Epoch: 2 Training...\n",
      "epoch: 2\t batch: 1000\t loss: 1.308583\n",
      "Accuracy of the network on the 10000 test images: 53 %\n",
      "Epoch: 3 Training...\n",
      "epoch: 3\t batch: 1000\t loss: 1.149159\n",
      "Accuracy of the network on the 10000 test images: 60 %\n",
      "Epoch: 4 Training...\n",
      "epoch: 4\t batch: 1000\t loss: 1.038767\n",
      "Accuracy of the network on the 10000 test images: 60 %\n",
      "Epoch: 5 Training...\n",
      "epoch: 5\t batch: 1000\t loss: 0.959498\n",
      "Accuracy of the network on the 10000 test images: 62 %\n",
      "Epoch: 6 Training...\n",
      "epoch: 6\t batch: 1000\t loss: 0.897161\n",
      "Accuracy of the network on the 10000 test images: 63 %\n",
      "Epoch: 7 Training...\n",
      "epoch: 7\t batch: 1000\t loss: 0.836161\n",
      "Accuracy of the network on the 10000 test images: 65 %\n",
      "Epoch: 8 Training...\n",
      "epoch: 8\t batch: 1000\t loss: 0.783195\n",
      "Accuracy of the network on the 10000 test images: 65 %\n",
      "Epoch: 9 Training...\n",
      "epoch: 9\t batch: 1000\t loss: 0.744737\n",
      "Accuracy of the network on the 10000 test images: 65 %\n",
      "Epoch: 10 Training...\n",
      "epoch: 10\t batch: 1000\t loss: 0.711164\n",
      "Accuracy of the network on the 10000 test images: 65 %\n",
      "Epoch: 11 Training...\n",
      "epoch: 11\t batch: 1000\t loss: 0.665848\n",
      "Accuracy of the network on the 10000 test images: 65 %\n",
      "Epoch: 12 Training...\n",
      "epoch: 12\t batch: 1000\t loss: 0.633129\n",
      "Accuracy of the network on the 10000 test images: 64 %\n",
      "Epoch: 13 Training...\n",
      "epoch: 13\t batch: 1000\t loss: 0.594862\n",
      "Accuracy of the network on the 10000 test images: 65 %\n",
      "Epoch: 14 Training...\n",
      "epoch: 14\t batch: 1000\t loss: 0.568164\n",
      "Accuracy of the network on the 10000 test images: 66 %\n",
      "Epoch: 15 Training...\n",
      "epoch: 15\t batch: 1000\t loss: 0.546708\n",
      "Accuracy of the network on the 10000 test images: 65 %\n",
      "Epoch: 16 Training...\n",
      "epoch: 16\t batch: 1000\t loss: 0.517634\n",
      "Accuracy of the network on the 10000 test images: 65 %\n",
      "using  Adam\n",
      "Epoch: 1 Training...\n",
      "epoch: 1\t batch: 1000\t loss: 1.795064\n",
      "Accuracy of the network on the 10000 test images: 40 %\n",
      "Epoch: 2 Training...\n",
      "epoch: 2\t batch: 1000\t loss: 1.393169\n",
      "Accuracy of the network on the 10000 test images: 51 %\n",
      "Epoch: 3 Training...\n",
      "epoch: 3\t batch: 1000\t loss: 1.187155\n",
      "Accuracy of the network on the 10000 test images: 56 %\n",
      "Epoch: 4 Training...\n",
      "epoch: 4\t batch: 1000\t loss: 1.077953\n",
      "Accuracy of the network on the 10000 test images: 59 %\n",
      "Epoch: 5 Training...\n",
      "epoch: 5\t batch: 1000\t loss: 0.982242\n",
      "Accuracy of the network on the 10000 test images: 63 %\n",
      "Epoch: 6 Training...\n",
      "epoch: 6\t batch: 1000\t loss: 0.909269\n",
      "Accuracy of the network on the 10000 test images: 64 %\n",
      "Epoch: 7 Training...\n",
      "epoch: 7\t batch: 1000\t loss: 0.855930\n",
      "Accuracy of the network on the 10000 test images: 64 %\n",
      "Epoch: 8 Training...\n",
      "epoch: 8\t batch: 1000\t loss: 0.798396\n",
      "Accuracy of the network on the 10000 test images: 66 %\n",
      "Epoch: 9 Training...\n",
      "epoch: 9\t batch: 1000\t loss: 0.761098\n",
      "Accuracy of the network on the 10000 test images: 67 %\n",
      "Epoch: 10 Training...\n",
      "epoch: 10\t batch: 1000\t loss: 0.716538\n",
      "Accuracy of the network on the 10000 test images: 65 %\n",
      "Epoch: 11 Training...\n",
      "epoch: 11\t batch: 1000\t loss: 0.672694\n",
      "Accuracy of the network on the 10000 test images: 67 %\n",
      "Epoch: 12 Training...\n",
      "epoch: 12\t batch: 1000\t loss: 0.660792\n",
      "Accuracy of the network on the 10000 test images: 68 %\n",
      "Epoch: 13 Training...\n",
      "epoch: 13\t batch: 1000\t loss: 0.629084\n",
      "Accuracy of the network on the 10000 test images: 67 %\n",
      "Epoch: 14 Training...\n",
      "epoch: 14\t batch: 1000\t loss: 0.594131\n",
      "Accuracy of the network on the 10000 test images: 67 %\n",
      "Epoch: 15 Training...\n",
      "epoch: 15\t batch: 1000\t loss: 0.566059\n",
      "Accuracy of the network on the 10000 test images: 68 %\n",
      "Epoch: 16 Training...\n",
      "epoch: 16\t batch: 1000\t loss: 0.547811\n",
      "Accuracy of the network on the 10000 test images: 68 %\n",
      "using  Adagrad\n",
      "Epoch: 1 Training...\n",
      "epoch: 1\t batch: 1000\t loss: 1.767198\n",
      "Accuracy of the network on the 10000 test images: 43 %\n",
      "Epoch: 2 Training...\n",
      "epoch: 2\t batch: 1000\t loss: 1.366478\n",
      "Accuracy of the network on the 10000 test images: 52 %\n",
      "Epoch: 3 Training...\n",
      "epoch: 3\t batch: 1000\t loss: 1.261305\n",
      "Accuracy of the network on the 10000 test images: 54 %\n",
      "Epoch: 4 Training...\n",
      "epoch: 4\t batch: 1000\t loss: 1.197061\n",
      "Accuracy of the network on the 10000 test images: 55 %\n",
      "Epoch: 5 Training...\n",
      "epoch: 5\t batch: 1000\t loss: 1.137803\n",
      "Accuracy of the network on the 10000 test images: 57 %\n",
      "Epoch: 6 Training...\n",
      "epoch: 6\t batch: 1000\t loss: 1.099169\n",
      "Accuracy of the network on the 10000 test images: 58 %\n",
      "Epoch: 7 Training...\n",
      "epoch: 7\t batch: 1000\t loss: 1.068027\n",
      "Accuracy of the network on the 10000 test images: 59 %\n",
      "Epoch: 8 Training...\n",
      "epoch: 8\t batch: 1000\t loss: 1.035466\n",
      "Accuracy of the network on the 10000 test images: 59 %\n",
      "Epoch: 9 Training...\n",
      "epoch: 9\t batch: 1000\t loss: 1.011955\n",
      "Accuracy of the network on the 10000 test images: 61 %\n",
      "Epoch: 10 Training...\n",
      "epoch: 10\t batch: 1000\t loss: 0.980061\n",
      "Accuracy of the network on the 10000 test images: 61 %\n",
      "Epoch: 11 Training...\n",
      "epoch: 11\t batch: 1000\t loss: 0.960517\n",
      "Accuracy of the network on the 10000 test images: 61 %\n",
      "Epoch: 12 Training...\n",
      "epoch: 12\t batch: 1000\t loss: 0.934178\n",
      "Accuracy of the network on the 10000 test images: 62 %\n",
      "Epoch: 13 Training...\n",
      "epoch: 13\t batch: 1000\t loss: 0.913595\n",
      "Accuracy of the network on the 10000 test images: 62 %\n",
      "Epoch: 14 Training...\n",
      "epoch: 14\t batch: 1000\t loss: 0.902575\n",
      "Accuracy of the network on the 10000 test images: 62 %\n",
      "Epoch: 15 Training...\n",
      "epoch: 15\t batch: 1000\t loss: 0.886034\n",
      "Accuracy of the network on the 10000 test images: 63 %\n",
      "Epoch: 16 Training...\n",
      "epoch: 16\t batch: 1000\t loss: 0.869197\n",
      "Accuracy of the network on the 10000 test images: 63 %\n",
      "using  Adadelta\n",
      "Epoch: 1 Training...\n",
      "epoch: 1\t batch: 1000\t loss: 2.305224\n",
      "Accuracy of the network on the 10000 test images: 10 %\n",
      "Epoch: 2 Training...\n",
      "epoch: 2\t batch: 1000\t loss: 2.303472\n",
      "Accuracy of the network on the 10000 test images: 12 %\n",
      "Epoch: 3 Training...\n",
      "epoch: 3\t batch: 1000\t loss: 2.302460\n",
      "Accuracy of the network on the 10000 test images: 10 %\n",
      "Epoch: 4 Training...\n",
      "epoch: 4\t batch: 1000\t loss: 2.300196\n",
      "Accuracy of the network on the 10000 test images: 13 %\n",
      "Epoch: 5 Training...\n",
      "epoch: 5\t batch: 1000\t loss: 2.278049\n",
      "Accuracy of the network on the 10000 test images: 15 %\n",
      "Epoch: 6 Training...\n",
      "epoch: 6\t batch: 1000\t loss: 2.179338\n",
      "Accuracy of the network on the 10000 test images: 20 %\n",
      "Epoch: 7 Training...\n",
      "epoch: 7\t batch: 1000\t loss: 2.068092\n",
      "Accuracy of the network on the 10000 test images: 23 %\n",
      "Epoch: 8 Training...\n",
      "epoch: 8\t batch: 1000\t loss: 2.006137\n",
      "Accuracy of the network on the 10000 test images: 26 %\n",
      "Epoch: 9 Training...\n",
      "epoch: 9\t batch: 1000\t loss: 1.945327\n",
      "Accuracy of the network on the 10000 test images: 28 %\n",
      "Epoch: 10 Training...\n",
      "epoch: 10\t batch: 1000\t loss: 1.877283\n",
      "Accuracy of the network on the 10000 test images: 31 %\n",
      "Epoch: 11 Training...\n",
      "epoch: 11\t batch: 1000\t loss: 1.821692\n",
      "Accuracy of the network on the 10000 test images: 32 %\n",
      "Epoch: 12 Training...\n",
      "epoch: 12\t batch: 1000\t loss: 1.781038\n",
      "Accuracy of the network on the 10000 test images: 34 %\n",
      "Epoch: 13 Training...\n",
      "epoch: 13\t batch: 1000\t loss: 1.746969\n",
      "Accuracy of the network on the 10000 test images: 35 %\n",
      "Epoch: 14 Training...\n",
      "epoch: 14\t batch: 1000\t loss: 1.716647\n",
      "Accuracy of the network on the 10000 test images: 35 %\n",
      "Epoch: 15 Training...\n",
      "epoch: 15\t batch: 1000\t loss: 1.692306\n",
      "Accuracy of the network on the 10000 test images: 36 %\n",
      "Epoch: 16 Training...\n",
      "epoch: 16\t batch: 1000\t loss: 1.673831\n",
      "Accuracy of the network on the 10000 test images: 37 %\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light",
      "tags": []
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light",
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import os\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "import torchvision\n",
    "import torchvision.transforms as transforms\n",
    "import torch.optim as optim\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 定义超参数\n",
    "BATCH_SIZE = 32\n",
    "nEpochs = 16\n",
    "numPrint = 1000\n",
    "\n",
    "# cuda\n",
    "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
    "\n",
    "transform = transforms.Compose([\n",
    "    transforms.Resize((32, 32)),\n",
    "    transforms.ToTensor(),\n",
    "    transforms.Normalize([0.4914, 0.4822, 0.4465], [0.247, 0.243, 0.261])])\n",
    "\n",
    "# 加载数据集 (训练集和测试集)\n",
    "trainset = torchvision.datasets.CIFAR10(root='./', train=True, download=True, transform=transform)\n",
    "trainloader = torch.utils.data.DataLoader(trainset, batch_size=BATCH_SIZE, shuffle=True)\n",
    "testset = torchvision.datasets.CIFAR10(root='./', train=False, download=True, transform=transform)\n",
    "testloader = torch.utils.data.DataLoader(testset, batch_size=BATCH_SIZE, shuffle=False)\n",
    "\n",
    "\n",
    "# 定义神经网络\n",
    "class AlexNet(nn.Module):  # 训练 ALexNet\n",
    "    def __init__(self):\n",
    "        super(AlexNet, self).__init__()\n",
    "        # 五个卷积层\n",
    "        self.conv1 = nn.Sequential(  # 输入 32 * 32 * 3\n",
    "            nn.Conv2d(in_channels=3, out_channels=6, kernel_size=3, stride=1, padding=1),  # (32-3+2)/1+1 = 32\n",
    "            nn.ReLU(),\n",
    "            nn.MaxPool2d(kernel_size=2, stride=2, padding=0)  # (32-2)/2+1 = 16\n",
    "        )\n",
    "        self.conv2 = nn.Sequential(  # 输入 16 * 16 * 6\n",
    "            nn.Conv2d(in_channels=6, out_channels=16, kernel_size=3, stride=1, padding=1),  # (16-3+2)/1+1 = 16\n",
    "            nn.ReLU(),\n",
    "            nn.MaxPool2d(kernel_size=2, stride=2, padding=0)  # (16-2)/2+1 = 8\n",
    "        )\n",
    "        self.conv3 = nn.Sequential(  # 输入 8 * 8 * 16\n",
    "            nn.Conv2d(in_channels=16, out_channels=32, kernel_size=3, stride=1, padding=1),  # (8-3+2)/1+1 = 8\n",
    "            nn.ReLU(),\n",
    "            nn.MaxPool2d(kernel_size=2, stride=2, padding=0)  # (8-2)/2+1 = 4\n",
    "        )\n",
    "        self.conv4 = nn.Sequential(  # 输入 4 * 4 * 64\n",
    "            nn.Conv2d(in_channels=32, out_channels=64, kernel_size=3, stride=1, padding=1),  # (4-3+2)/1+1 = 4\n",
    "            nn.ReLU(),\n",
    "            nn.MaxPool2d(kernel_size=2, stride=2, padding=0)  # (4-2)/2+1 = 2\n",
    "        )\n",
    "        self.conv5 = nn.Sequential(  # 输入 2 * 2 * 128\n",
    "            nn.Conv2d(in_channels=64, out_channels=128, kernel_size=3, stride=1, padding=1),  # (2-3+2)/1+1 = 2\n",
    "            nn.ReLU(),\n",
    "            nn.MaxPool2d(kernel_size=2, stride=2, padding=0)  # (2-2)/2+1 = 1\n",
    "        )  # 最后一层卷积层，输出 1 * 1 * 128\n",
    "        # 全连接层\n",
    "        self.dense = nn.Sequential(\n",
    "            nn.Linear(128, 120),\n",
    "            nn.ReLU(),\n",
    "            nn.Linear(120, 84),\n",
    "            nn.ReLU(),\n",
    "            nn.Linear(84, 10)\n",
    "        )\n",
    "\n",
    "    def forward(self, x):\n",
    "        x = self.conv1(x)\n",
    "        x = self.conv2(x)\n",
    "        x = self.conv3(x)\n",
    "        x = self.conv4(x)\n",
    "        x = self.conv5(x)\n",
    "        x = x.view(-1, 128)\n",
    "        x = self.dense(x)\n",
    "        return x\n",
    "\n",
    "\n",
    "# 为每个优化器创建一个Net\n",
    "net_SGD = AlexNet()\n",
    "net_Momentum = AlexNet()\n",
    "net_RMSprop = AlexNet()\n",
    "net_Adam = AlexNet()\n",
    "net_Adagrad = AlexNet()\n",
    "net_Adadelta = AlexNet()\n",
    "nets = [net_SGD, net_Momentum, net_RMSprop, net_Adam, net_Adagrad, net_Adadelta]\n",
    "\n",
    "# 初始化优化器\n",
    "opt_SGD = torch.optim.SGD(net_SGD.parameters(), lr=0.01)\n",
    "opt_Momentum = torch.optim.SGD(net_Momentum.parameters(), lr=0.01, momentum=0.8)\n",
    "opt_RMSprop = torch.optim.RMSprop(net_RMSprop.parameters(), lr=0.001, alpha=0.99)\n",
    "opt_Adam = torch.optim.Adam(net_Adam.parameters(), lr=0.001, betas=(0.9, 0.99))\n",
    "opt_Adagrad = torch.optim.Adagrad(net_Adagrad.parameters(), lr=0.01)\n",
    "opt_Adadelta = torch.optim.Adadelta(net_Adadelta.parameters(), lr=0.01)\n",
    "\n",
    "optimizers = [opt_SGD, opt_Momentum, opt_RMSprop, opt_Adam, opt_Adagrad, opt_Adadelta]\n",
    "\n",
    "# 定义损失函数\n",
    "loss_function = nn.CrossEntropyLoss()  # 交叉熵损失\n",
    "\n",
    "# 记录training时不同神经网络的loss值\n",
    "losses_history = [[], [], [], [], [], []]\n",
    "\n",
    "# 记录training时不同神经网络的top1Acc值\n",
    "top1Acc_history = [[], [], [], [], [], []]\n",
    "\n",
    "\n",
    "# 使用测试数据测试网络\n",
    "def Accuracy():\n",
    "    correct = 0\n",
    "    total = 0\n",
    "    with torch.no_grad():  # 训练集中不需要反向传播\n",
    "        for data in testloader:\n",
    "            images, labels = data\n",
    "            images, labels = images.to(device), labels.to(device)  # 将输入和目标在每一步都送入GPU\n",
    "            outputs = net(images)\n",
    "            _, predicted = torch.max(outputs.data, 1)  # 返回每一行中最大值的那个元素，且返回其索引\n",
    "            total += labels.size(0)\n",
    "            correct += (predicted == labels).sum().item()\n",
    "    return 100.0 * correct / total\n",
    "\n",
    "\n",
    "optime = ['SGD', 'Momentum', 'RMSprop', 'Adam', 'Adagrad', 'Adadelta']\n",
    "name_indx = 0\n",
    "for net, opt, l_his, acc_his in zip(nets, optimizers, losses_history, top1Acc_history):\n",
    "    print('using ', optime[name_indx])\n",
    "    for epoch in range(nEpochs):\n",
    "        running_loss = 0.0\n",
    "        print('Epoch:', epoch + 1, 'Training...')\n",
    "        for i, data in enumerate(trainloader, 0):\n",
    "            inputs, labels = data  # 取数据\n",
    "            inputs, labels = inputs.to(device), labels.to(device)  # 将输入和目标在每一步都送入GPU\n",
    "            opt.zero_grad()  # 将梯度置零\n",
    "            # 训练\n",
    "            net = net.to(device)\n",
    "            outputs = net(inputs)\n",
    "            loss = loss_function(outputs, labels).to(device)\n",
    "\n",
    "            loss.backward()  # 反向传播\n",
    "            opt.step()\n",
    "\n",
    "            running_loss += loss.item()\n",
    "            if i % numPrint == 999:  # 每 numPrint 张图片，打印一次\n",
    "                l_his.append(running_loss / numPrint)\n",
    "                print('epoch: %d\\t batch: %d\\t loss: %.6f' % (epoch + 1, i + 1, running_loss / numPrint))\n",
    "                running_loss = 0.0\n",
    "                top1Acc = Accuracy()\n",
    "                print('Accuracy of the network on the 10000 test images: %d %%' % top1Acc)\n",
    "                acc_his.append(top1Acc)\n",
    "    model_name = optime[name_indx] + '_model.pkl'\n",
    "    save_path = './' + model_name\n",
    "    torch.save(net, save_path)\n",
    "    name_indx += 1\n",
    "\n",
    "for i, l_his in enumerate(losses_history):\n",
    "    plt.plot(l_his, label=optime[i])\n",
    "plt.legend(loc='best')\n",
    "plt.xlabel('Steps')\n",
    "plt.ylabel('Loss')\n",
    "plt.ylim((0, 3))\n",
    "plt.show()\n",
    "\n",
    "for i, t_his in enumerate(top1Acc_history):\n",
    "    plt.plot(t_his, label=optime[i])\n",
    "plt.legend(loc='best')\n",
    "plt.xlabel('Steps')\n",
    "plt.ylabel('Top1Acc')\n",
    "plt.ylim((0, 100))\n",
    "plt.show()\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "collapsed": true,
    "id": "8s0mEKjl2Wml"
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "colab": {
   "authorship_tag": "ABX9TyNg/EPGgM6CnKPyPep48Jb+",
   "collapsed_sections": [],
   "name": "cifar10_alex_.ipynb",
   "provenance": []
  },
  "kernelspec": {
   "display_name": "Python [default]",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.7"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
